﻿using System;


namespace 任务管理器
{
    public class 任务
    {
        /// <summary>
        /// 设定或获取任务的唯一识别ID码
        /// </summary>
        public int 任务ID { get; set; }
        /// <summary>
        /// 设定或获取任务的添加时间
        /// </summary>
        public DateTime 任务添加时间 { set; get; }
        /// <summary>
        /// 设定任务的状态
        /// </summary>
        public 任务执行状态 任务状态 { get; set; }
        /// <summary>
        /// 表示任务的执行状态
        /// </summary>
        public enum 任务执行状态
        {

            /// <summary>
            /// 任务当前正在进行中
            /// </summary>
            正在进行,
            /// <summary>
            /// 任务处于等待状态，这通常指示该任务正在等待一些情况的快速处理
            /// </summary>
            正在等待,
            /// <summary>
            /// 任务处于阻塞状态，这通常指示该任务等待一些情况处理，但是会持续较长时间才能处理完毕
            /// </summary>
            阻塞中,
            /// <summary>
            /// 任务处于暂停状态，无法继续推动进行
            /// </summary>
            暂停中,
            /// <summary>
            /// 指示这是一个已完成的任务
            /// </summary>
            已完成,
            /// <summary>
            /// 指示这个任务已经失败
            /// </summary>
            已失败,
        }
        /// <summary>
        /// 设置或获取任务执行时发生的类型变化
        /// </summary>
        public 时间模式 任务时间模式 { get; set; }
        /// <summary>
        /// 任务执行时发生的类型变化
        /// </summary>
        public enum 时间模式
        {
            /// <summary>
            /// 指示只是一个一般类型的任务，不使用时间模式控制
            /// </summary>
            不使用,
            正计时间模式,
            倒计时间模式,
            DeadLine时间模式


        }
        public DateTime 任务时限 { get; set; }
        /// <summary>
        /// 指示这个任务是否需要即时跟踪，若选择即时跟踪，应用程序将会提示该任务的未完成状态
        /// </summary>
        public enum 即时跟踪状态
        {
            /// <summary>
            /// 指示这是一个需要即时跟踪的任务，需要系统提醒该任务的未完成状态
            /// </summary>
            即时跟踪,
            /// <summary>
            /// 指示这不是一个需要即时跟踪的任务，不需要系统提醒该任务的未完成状态
            /// </summary>
            不即时跟踪
        }
        /// <summary>
        /// 设定或获取这个任务的跟踪状态，若设为跟踪状态，应用程序将会提示该任务的未完成状态
        /// </summary>
        public 即时跟踪状态 跟踪状态 { get; set; }
        /// <summary>
        /// 设定或获取任务的大类
        /// </summary>
        public string 任务类别 { set; get; }
        /// <summary>
        /// 设定或获取任务的名字
        /// </summary>
        public string 任务名称 { set; get; }
        /// <summary>
        /// 设定或获取任务的描述
        /// </summary>
        public string 任务描述 { set; get; }
        /// <summary>
        /// 设定或获取当前任务的进行进度（若需要），一般配有进度条展示，部分进度可以手动设定。
        /// </summary>
        public double 任务进度 { set; get; }
        /// <summary>
        /// 设定或获取当前任务的已进行项目数
        /// </summary>
        public int 当前任务项 { get; set; }
        /// <summary>
        /// 设定或获取当前任务的总项目数
        /// </summary>
        public int 最高任务项 { get; set; }
        /// <summary>
        /// 设定或获取该任务下是否有子条目
        /// </summary>
        public bool 是否有子任务 { get; set; }
        /// <summary>
        /// 设定或获取该任务的下级子ID
        /// </summary>
        public string 子任务ID { set; get; }
        /// <summary>
        /// 是否通过命令行获取进度
        /// </summary>
        public bool 是否使用命令行 { set; get; }
        /// <summary>
        /// 获取进度使用的命令行
        /// </summary>
        public string 命令行 { set; get; }
        /// <summary>
        /// 是否读取文本文件来获取进度
        /// </summary>
        public bool 是否使用文本行 { get; set; }
        /// <summary>
        /// 获取进度使用的文本行
        /// </summary>
        public string 文本行 { get; set; }
        public string 配置文件路径 { get; set; }
        public DateTime 文本文件更新时间 { get; set; } = DateTime.Now;
    }
    public class 任务套
    {
        public 任务 任务信息 { get; set; }
        public 单任务模具 任务模具 { get; set; }
        public bool 正被展开显示 { get; set; }
    }

}
